|
Date : 8 septembre 1993 Protection : DISQUETTE CLEF Programme : CYRUS CHESS Outils : SOFT-ICE V2.50 Fichier : CYRUS.COM et CHESS.TSK Temps pass� : 1 Heure Soci�t� : INTELLIGENT CHESS SOFTWARE LTD Divers : Fichiers en clair Origine : B.Alain Num�ro : 220 CYRUS CHESS ! Un de mes premier programmes de jeu en EGA ! C'est vrai qu'il y avait une protection disquette mais � l'�poque je n'avais pas l'exp�rience n�cessaire pour faire sauter le verrou. Ce qui m'a incit� � jeter un oeil sur ce SOFT fut l'appel au-secours qui suit: ( Adresse et NOM ont �t� supprim� ) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ B. Alain Snetsabar, le 28/08/93 chemin de la Croix blanche 88999 Snetsabar Freddy, Ayant lu une disquette de fichiers *.dep, je me permets de vous �crire car j'ai tent� de d�plomber un jeu et n'y suis parvenu que partiellement car je ne poss�de pas votre ma�trise. Voici le r�sum� des �v�nements: - le programme � d�prot�ger se nomme CYRUS.COM ( jeu d'�checs). - en le lan�ant, on obtient le message "Disque corrompu". - avec AFD, je le fais tourner et remarque l'acc�s sur A: MOV BX, 0830 MOV CX, 0201 MOV AX, 0204 INT 13 ... CMP AH, 04 - apr�s l'INT 13, AX est � 8000. Je fais une modification en ligne sur AX � 0400, je lance un G et le programme tourne. - je poursuis en faisant la modif en dur. Ayant rep�r� une zone texte (102 et suivants), je court-circuite l'INT 13 par un JMP 102 o� j'�cris: MOV AX, (valeur lue sur la pile au retour de l'INT 13) PUSHAX POPF MOV AX, 0400 JMP (adresse suivant l'INT 13) - ces modifications sont dans le programme CYRUS1.COM mais il ne tourne pas ( les fl�ches de d�placement ne fonctionnent pas). - retour au programme original et surprise: si on modifie en ligne le registre AX � 0400 apr�s l'INT 13 et qu'on lance un G, le programme tourne parfaitement. Si l'on tente, apr�s l'INT 13 et la modif sur AX, de suivre le programme par instruction, il se plante. D�tecte-t-il le pas � pas ? Quaid Analyser en pacth in/out sur la 10 m'envoie des tas de messages sur la vid�o auxquels je ne comprends rien. - je d�cide alors d'utiliser SOFT-ICE dont vous vantez les qualit�s. H�las, je n'ai pas la doc de ce soft, et je ne sais pas comment il est possible de faire d�rouler un programme et d'examiner par la suite par o� il est pass� ( est-ce cela que l'on appelle le back trace ? ). Malgr� plusieurs tentatives, ( XRSET, TRACE 100, XP, SHOW) rien ne se passe et je jette l'�ponge, d'autant plus que cette version 2.50 de SOFT-ICE simule un clavier QWERTY. L'ultime solution, c'est Freddy, me dis-je !! Voil� donc la raison de cette lettre. J'en profite pour y ajouter quelques questions: - Pourriez-vous me faire parvenir une doc de SOFT-ICE ? ( je peux photocopier). - Pourquoi avec SOFT-ICE ai-je un clavier QWERTY ? - Qu'est-ce que le back trace en comment en faire avec SOFT-ICE ? - Comment �viter la d�tection du pas � pas par un programme ? - Avec SOFT-ICE, quelle configuration de CONFIG.SYS ? - Connaissez-vous la protection Cadenas ? - Existe-t-il un programme lisant le header d'un fichier ( si vous l'avez, pouvez-vous me l'envoyer ?). - Pourriez-vous m'adresser les derniers *.dep ? ( > juin 1992) Ces informations me permettraient de mieux utiliser SOFT- ICE et ainsi de tenter de nouvelles aventures de d�plombage ( � mon niveau qui est tr�s modeste ). Vous remerciant par avance pour votre gentillesse et pour la qualit� de vos informations, je vous prie de croire, cher Freddy, � l'assurance de mes sentiments les meilleurs. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Je reprends donc du d�but le cheminement de B.A. L'INT13 est utilis�e pour l'acc�s au lecteur de disquette. Il faut bien sur passer les 20 premi�res it�rations qui concernent le disque dur. Au bout de la vingt et uni�me le lecteur se manifeste... Au retour on teste le contenu du registre AH qui doit contenir 04. Comment le sais-je, parce-que un peu plus loin on fait un CMP AH,04. En faisant la modif "ON LINE" le soft fonctionne. Bien. Cela semble bien facile mais la suite va d�montrer le contraire. CS=1110 CS:01AD BB3008 MOV BX,0830 CS:01B0 B90102 MOV CX,0201 CS:01B3 B80402 MOV AX,0204 CS:01B6 CD13 INT 13 CS:01B8 59 POP CX CS:01B9 720A ���< JB 01C5 CS:01BB BACD00 � MOV DX,00CD ; AFFICHAGE DU MESSAGE CS:01BE B409 � MOV AH,09 ; "DISQUE CORROMPU" CS:01C0 CD21 � INT 21 ; PAR INT 21 SF 09. CS:01C2 E973FF � JMP 0138 CS:01C5 80FC04 ���> CMP AH,04 ; On vient ici pour tester. CS:01C8 740F JZ 01D9 ; Si OK on saute en 01D9. La modification faite simplement dans le fichier en for�ant le saut ne donne rien, en pla�ant 04 dans AH avant le test cela ne fonctionne pas mieux. Cr�non ! Quand je dis que le soft ne fonctionne pas je veux simplement dire qu'il se charge normalement en fait mais que les touches de d�placement ne sont plus valid�es. L'entr�e des codes au clavier du style E2E4 est gel�e �galement. Je fulmine pendant une demi-heure essayant toutes sortes de manips sans le moindre r�sultat... puis, la lumi�re vint. Lorsque je fais ma modif en volant, en for�ant un flag ou en mettant 04 dans AH, je ne modifie pas le code du programme et �a fonctionne. Par contre d�s que l'on modifie le source on ne peut plus jouer ! Il doit y avoir un test de CRC quelque part de tout le programme ou plus simplement de la partie qui va tester la disquette. Je place un point d'arr�t en lecture du test qui suit l'INT13, et hop SOFT-ICE r�apparait une fois que l'image est affich�e ! BPMB 1110:01C8 R Le test du CRC se fait en CS:1918, il suffit de le forcer pour pouvoir faire toutes les modifs que l'on veut autour de l'INT13. Test du CRC: ( cette routine se trouve dans le fichier CHESS.TSK ) CS=2649 CS:1908 AC LODSB CS:1909 03D8 ADD BX,AX CS:190B E2FB LOOP 1908 CS:190D 07 POP ES CS:190E 1F POP DS CS:190F 80268724EF AND BYTE PTR [2487],EF CS:1914 81FB71CB CMP BX,CB71 ; Le CRC doit �tre �gal � CB71. CS:1918 7405 JZ 191F ; A forcer par EB ( jmp ). CS:191A 800E872410 OR BYTE PTR [2487],10 ; ici on emp�che les ; touches. CS:191F E8B001 CALL 1AD2 ; Suite.... Et voici la modif � faire apr�s l'INT 13 pour forcer le test: CS:01B6 CD13 INT 13 CS:01B8 59 POP CX CS:01B9 EB1E JMP 01D9 Avec PCTOOLS chercher dans le fichier CYRUS.COM: Chercher: B90102B80402CD1359720A Modifier: ..................EB1E Et dans le fichier CHESS.TSK: Chercher: 81FB71CB7405 Modifier: ........EB.. FREDDY |